HAL库移植正点原子屏幕显示和触摸驱动

您所在的位置:网站首页 野火f429 spi1有问题 HAL库移植正点原子屏幕显示和触摸驱动

HAL库移植正点原子屏幕显示和触摸驱动

2024-01-01 12:46| 来源: 网络整理| 查看: 265

说明

本文主要内容如下: 使用STM32CubeMX生成Keil工程,并移植TFT-LCD的显示和触摸驱动到正点原子的探索者开发板【STM32F407ZGT6】以及STM32F407ZGT6最小系统板上。

文末提供程序【百度网盘】

写这篇博客的原因: 没有看到有完整移植过程、描述清楚的博客。导致我认识的同学在移植的过程中遇到了很多问题。我尽力写得清楚点。

注意: 本文不介绍原理,原因是我个人认为能用就行,遇到了问题或者感兴趣再去了解原理。本文只是记录了一个完整的移植过程。后文提供博客中提到的所有程序。

环境:

STM32CubeMX 6.61ARM Compiler V6.18 在这里插入图片描述 3.正点原子的显示工程和触摸工程 STM32CubeMX配置

文中没有标注序号的均是可以不用修改的部分

RCC

在这里插入图片描述

SYS

在这里插入图片描述

Clock Configuration

在这里插入图片描述

GPIO

在这里插入图片描述

串口

配置串口的原因:正点原子的代码中含有自己写的串口代码,并且和HAL生成的串口代码文件一致,均为usart.c和usart.h。后续移植过程中不会引入正点原子的串口程序,但是他的其他文件中包含这两个uart文件,所以在这里配置一下。 在这里插入图片描述

FSMC

在这里插入图片描述

Project Manager

在这里插入图片描述 在这里插入图片描述 生成代码后进入Keil,建议编译一下空项目,没问题就进入下一步。

显示驱动的移植 引入LCD驱动

在这里插入图片描述 将件夹下的Drivers\BSP\LCD移植到自己工程下,我移植到了这里面 在这里插入图片描述

底层文件

正点原子重新实现了一些函数,包括delay,引脚控制等,移植的时候很容易在这上面出错。我们也不需要重写或者做大幅度的修改。只需要解决一些冲突和报错即可。

打开正点原子工程中的Drivers\SYSTEM,将下图中的两个文件夹复制到自己的工程下面。我的放在了BSP\SYSTEM下面。【参考上图文件夹】 在这里插入图片描述

keil添加文件和文件路径

在这里插入图片描述 在这里插入图片描述

编译 头文件路径修改

移植好后不能编译,因为头文件路径有问题。我们需要修改所有引入的文件的路径。只要有一个没改就会有报错。另外图中的usart.h可以注释也可以不注释,如果没有在STM32CubeMX配置串口,就需要注释。 在这里插入图片描述

注释printf

修改头文件路径后,还需要注释所有的printf,可以快捷键Ctrl + F呼出搜索面板: 在这里插入图片描述 然后注释掉引入的文件中的所有printf。【这么做的原因是我没有写串口重定向,后面调试的时候需要的话还是可以取消注释的】

HAL_SRAM_MspInit

此时再次编译,依旧会报错,报错问题在HAL_SRAM_MspInit这个函数上。原因是正点原子在lcd.c文件中定义并实现了这个函数,STM32CubeMX在生成代码时,在fsmc.c中也生成了这个函数,导致了多重定义。 解决办法也很简单:注释其中一个即可,为了不破坏HAL库,我们可以优先注释lcd.c的HAL_SRAM_MspInit【两种注释方法我都尝试了,都能正常驱动屏幕】

delay.c的修改

此时编译不会再出现问题。但是驱动屏幕会无法正常显示。问题出在delay.c这个文件中。 我们将delay_us这个函数中的内容进行注释,并写入如下内容(需要注意,下面的delay_us延时时间是不准确的。):

void delay_us(uint32_t nus) { for(int i = 0; i HAL_Delay(nms); }

同时也要注意,文件中含有两个delay_ms和delay_ns,实在分不清楚,请两个都做修改。并且delay.c的最下方有一个HAL_Delay,请将这个函数的内容包括函数名都注释掉,如下图。【2023-3-18补充】 在这里插入图片描述

显示颜色

在main.c中引入lcd.h这个头文件并且在main函数的**while(1)**之前写上:

lcd_init() lcd_clear(GREEN);

在这里插入图片描述 然后编译下载程序,复位开发板后即可。

报错

如果此时编译还出现报错,很有可能是你引入了lcd_ex.c这个文件,移除重新编译即可【如下图】 在这里插入图片描述

触摸驱动的移植 引入触摸驱动

和上面的步骤是类似的,先找到触摸工程: 在这里插入图片描述 并将路径Drivers\BSP下的三个文件夹【如下图】复制到自己工程中 在这里插入图片描述

Keil中添加文件和文件路径

在这里插入图片描述 在这里插入图片描述

编译

和引入显示驱动一致,需要修改一下文件中头文件的路径。也要注释printf。

报错虽然多,但是容易修改。ft5206.c中有一个printf忘记注释导致触摸无法工作,顺带还影响了显示。

触摸测试

在最小系统板上,下面的代码调用了触摸案例。 在这里插入图片描述 而在正点原子的探索者开发板上,初始化的时候进入到了其他的else中,这个else中没有触摸测试程序。所以还需要移植一下正点原子的触摸案例。

程序

完整的工程如下: 链接:https://pan.baidu.com/s/1wJnGJlebi5vQRwY_XeEwmA?pwd=3hxg 提取码:3hxg

总结

待补充。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3